读书笔记 numpy入门 第1章 创建数组方法和数据类型

https://github.com/jakevdp/PythonDataScienceHandbook

从头创建数组

用 NumPy 内置的方法从头创建数组。

创建一个长度为10的数组,数组的值都是0

1
2
3
4
import numpy as np
np.zeros(10, dtype=int)

# output: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

创建一个3×5的浮点型数组,数组的值都是1

1
2
3
4
5
6
np.ones((3, 5), dtype=float)

# output
# array([[1., 1., 1., 1., 1.],
# [1., 1., 1., 1., 1.],
# [1., 1., 1., 1., 1.]])

创建一个3×5的浮点型数组,数组的值都是3.14

1
2
3
4
5
6
np.full((3, 5), 3.14)

#output
# array([[3.14, 3.14, 3.14, 3.14, 3.14],
# [3.14, 3.14, 3.14, 3.14, 3.14],
# [3.14, 3.14, 3.14, 3.14, 3.14]])

创建一个线性序列数组,从0开始,到20结束,步长为2。(它和内置的range()函数类似)

1
2
3
np.arange(0, 20, 2)

#output: array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])

创建一个5个元素的数组,这5个数均匀地分配到0~1

1
2
3
np.linspace(0, 1, 5)

#output: array([0. , 0.25, 0.5 , 0.75, 1. ])

创建一个3×3的、在0~1均匀分布的随机数组成的数组

1
2
3
4
5
6
np.random.random((3, 3))

#output
#array([[0.94795687, 0.62658297, 0.4240733 ],
# [0.75686519, 0.46357097, 0.58682988],
# [0.37997183, 0.28707067, 0.67190137]])

创建一个3×3的、均值为0、标准差为1的,正态分布的随机数数组

1
2
3
4
5
6
np.random.normal(0, 1, (3, 3))

#output
#array([[ 0.1348332 , -1.93013655, 1.21003072],
# [ 1.41562771, 0.29064906, 1.09749629],
# [-0.16664035, -0.67962834, -0.54942727]])

创建一个3×3的、[0, 10)区间的随机整型数组

1
2
3
4
5
6
np.random.randint(0, 10, (3, 3))

#output
#array([[8, 0, 5],
# [6, 5, 9],
# [9, 9, 0]])

创建一个3×3的单位矩阵

1
2
3
4
5
6
np.eye(3)

#output
#array([[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.]])

创建一个由3个整型数组成的未初始化的数组,数组的值是内存空间中的任意值

1
2
3
np.empty(3)

#output: array([1., 1., 1.])

NumPy标准数据类型

构建数组时,可以用以下2种方式指定数据类型:

用字符串参数

1
2
3
np.zeros(10, dtype='int16')

#output: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int16)

用相关NumPy对象来指定

1
2
3
np.zeros(10, dtype=np.int16)

#output: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int16)

NumPy标准数据类型表格:

http://numpy.org/

数据类型 描述
bool_ 布尔值(真、True 或假、False),用一个字节存储
int_ 默认整型(类似于 C 语言中的 long,通常情况下是 int64int32
intc 同 C 语言的 int 相同(通常是 int32int64
intp 用作索引的整型(和 C 语言的 ssize_t 相同,通常情况下是 int32int64
int8 字节(byte,范围从–128 到 127)
int16 整型(范围从–32768 到 32767)
int32 整型(范围从–2147483648 到 2147483647)
int64 整型(范围从–9223372036854775808 到 9223372036854775807)
uint8 无符号整型(范围从 0 到 255)
uint16 无符号整型(范围从 0 到 65535)
uint32 无符号整型(范围从 0 到 4294967295)
uint64 无符号整型(范围从 0 到 18446744073709551615)
float_ float64 的简化形式
float16 半精度浮点型:符号比特位,5 比特位指数(exponent),10 比特位尾数(mantissa)
float32 单精度浮点型:符号比特位,8 比特位指数,23 比特位尾数
float64 双精度浮点型:符号比特位,11 比特位指数,52 比特位尾数
complex_ complex128 的简化形式
complex64 复数,由两个 32 位浮点数表示
complex128 复数,由两个 64 位浮点数表示